﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="Cliente.cs" company="BS - Desenvolvemento">
//   Desenvolvimento de solucoes tecnologicas para automacao em geral
// </copyright>
// <summary>
//   A classe cliente.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace ProjetoModeloDDD.Domain.Entities
{
    using System;
    using System.Collections.Generic;

    /// <summary>
    /// A classe cliente.
    /// </summary>
    public class Cliente
    {
        /// <summary>
        /// Retorna ou atribui o valor que indica se o cliente esta ou nao ativo.
        /// </summary>
        public bool Ativo { get; set; }

        /// <summary>
        /// retorna ou atribui o id do cliente.
        /// </summary>
        public int ClienteId { get; set; }

        /// <summary>
        /// Retorna ou atribuia data de cadastro.
        /// </summary>
        public DateTime DataCadastro { get; set; }

        /// <summary>
        /// retorna ou atribui o email.
        /// </summary>
        public string Email { get; set; }

        /// <summary>
        /// retorna ou atribui o nome.
        /// </summary>
        public string Nome { get; set; }

        /// <summary>
        /// Retorna ou atribui a lista de produtos.
        /// </summary>
        public virtual IEnumerable<Produto> Produtos { get; set; }

        /// <summary>
        /// Retorna ou atribui o sobre nome.
        /// </summary>
        public string Sobrenome { get; set; }

        /// <summary>
        /// Metodo para identificar cliente especial.
        /// </summary>
        /// <param name="cliente">
        /// O cliente.
        /// </param>
        /// <returns>
        /// Retorna um bool
        /// </returns>
        public bool ClienteEspecial(Cliente cliente)
        {
            return cliente.Ativo && DateTime.Now.Year - cliente.DataCadastro.Year >= 5;
        }
    }
}